#define BOOST_TEST_MODULE SumIntegersTestSuite 
#include <boost/test/unit_test.hpp> // 引入 Boost.Test 核心头文件

#include "sum_integers.hpp" // 引入待测试的函数声明

// 定义一个测试用例。BOOST_AUTO_TEST_CASE 宏会自动注册一个测试函数。
// 测试用例的名称应清晰地描述其目的。
BOOST_AUTO_TEST_CASE(test_positive_integers_sum)
{
  auto integers = {1, 2, 3, 4, 5};
  auto result = sum_integers(integers);
  
  // 使用 BOOST_REQUIRE 进行断言。如果此断言失败，当前测试用例将立即终止。
  // 适用于测试用例后续执行依赖于此条件的情况。
  BOOST_REQUIRE(result == 15); 
  
  // 使用 BOOST_CHECK_EQUAL 进行断言。它会提供更详细的错误信息（例如，实际值和期望值）。
  // 即使此断言失败，当前测试用例的后续代码也会继续执行。
  BOOST_CHECK_EQUAL(result, 15); 
}

// 另一个测试用例：测试空列表的求和
BOOST_AUTO_TEST_CASE(test_empty_list_sum)
{
  std::initializer_list<int> integers = {}; // 空列表
  auto result = sum_integers(integers);
  BOOST_CHECK_EQUAL(result, 0); // 空列表求和应为 0
}

// 另一个测试用例：测试包含负数的列表求和
BOOST_AUTO_TEST_CASE(test_negative_integers_sum)
{
  auto integers = {-1, -2, 3};
  auto result = sum_integers(integers);
  BOOST_CHECK_EQUAL(result, 0); // -1 + -2 + 3 = 0
}